//
//  QNTipsUtil.h
//  QNReuseTool
//
//  Created by rsh on 2019/11/16.
//  Copyright © 2019年 rsh. All rights reserved.
//

#import <Foundation/Foundation.h>

/**
 通用提示语类型
 */
typedef NS_ENUM(NSInteger, NormalTips){
    NormalTipsLoading             = 1,     /**< 正在加载*/
    NormalTipsSending             = 2,     /**< 正在发送*/
    NormalTipsConnecting          = 3,     /**< 正在连接*/
    NormalTipsLogining            = 4,     /**< 正在登陆*/
    NormalTipsNetworkUnusual      = 100,   /**< 网络异常*/
    NormalTipsNetworkTimeout      = 101,   /**< 连接超时*/
    NormalTipsRequestFailed       = 102,   /**< 请求失败*/
    NormalTipsOperationSuccess    = 103,   /**< 操作成功*/
    NormalTipsDownloadFail        = 104,   /**< 下载失败*/
};

/**
 提示语工具类
 */
@interface QNTipsUtil : NSObject
#pragma mark - 通用提示
/**
 常用提示语
 
 @param type 通用提示语类型
 */
+ (void)showNormalTips:(NormalTips)type;

#pragma mark - 提示（带菊花）
/**
 白色背景遮挡内容的菊花（view上，需手动隐藏）
 */
+ (void)showMaskHUDWithMessage:(NSString *)message inView:(UIView *)view;

/**
 菊花（Window上，需手动隐藏）
 */
+ (void)showHUD;

/**
 带信息菊花（Window上，需手动隐藏）
 
 @param message 提示信息
 */
+ (void)showHUDWithMessage:(NSString *)message;

/**
 带信息菊花（View上，需手动隐藏）
 
 @param message 提示信息
 @param view 显示提示的View
 */
+ (void)showHUDWithMessage:(NSString *)message inView:(UIView *)view;

/**
 带信息菊花（View上，自动隐藏）
 
 @param message 提示信息
 @param view 显示提示的View
 @param time 自动隐藏延迟时间
 */
+ (void)showHUDWithMessage:(NSString *)message inView:(UIView *)view delay:(NSTimeInterval)time;

#pragma mark - 提示（不带菊花）

/**
 提示（Window上，1.5s后自动隐藏）
 
 @param message 提示信息
 */
+ (void)showTips:(NSString *)message;

/**
 提示（Window上，显示在底部，1.5s后自动隐藏）
 
 @param message 提示信息
 */
+ (void)showBottomTips:(NSString *)message;

/**
 提示（View上，1.5s后自动隐藏）
 
 @param message 提示信息
 @param view 显示提示的View
 */
+ (void)showTips:(NSString *)message inView:(UIView *)view;

/**
 提示（View上，自动隐藏）
 
 @param message 提示信息
 @param view 显示提示的View
 @param time 自动隐藏时间（default:1s）
 */
+ (void)showTips:(NSString *)message inView:(UIView *)view delay:(NSTimeInterval)time;

/**
 提示（View上，自动隐藏）
 
 @param message 提示信息
 @param view 显示提示的View
 @param time 自动隐藏时间
 @param yOffset 距离中心点的Y轴的位置
 */
+ (void)showTips:(NSString *)message inView:(UIView *)view delay:(NSTimeInterval)time yOffset:(CGFloat)yOffset;

#pragma mark - 成功，失败
/**
 成功提示（View上，自动隐藏）
 
 @param message 提示信息
 */
+ (void)showSuccessWithTips:(NSString *)message;

/**
 成功提示（View上，自动隐藏）
 
 @param message 提示信息
 @param time 自动隐藏时间
 */
+ (void)showSuccessWithTips:(NSString *)message delay:(NSTimeInterval)time;

/**
 错误提示（View上，自动隐藏）
 
 @param message 提示信息
 */
+ (void)showErrorWithTips:(NSString *)message;

/**
 错误提示（View上，自动隐藏）
 
 @param message 提示信息
 @param time 自动隐藏时间
 */
+ (void)showErrorWithTips:(NSString *)message delay:(NSTimeInterval)time;

+ (void)showProgress:(CGFloat)progress message:(NSString *)message;
+ (void)showProgress:(CGFloat)progress message:(NSString *)message inView:(UIView *)view;

// 自定义颜色菊花，底色透明，默认白色菊花，
+ (void)showActivityWithColor:(UIColor *)color inView:(UIView *)view;

#pragma mark - 隐藏
/**
 隐藏
 */
+ (void)hideHUD;

/**
 隐藏
 
 @param view 所在View
 */
+ (void)hideHUDWithView:(UIView *)view;

@end

@interface QNHUDHelp : NSObject
@property (nonatomic, strong) NSMutableArray * hudViews;
+ (QNHUDHelp *)share;
@end
